Specifying 'mem=' as Linux boot parameter disables the default
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 4 Nov 2005 10:46:10 +0000 (11:46 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 4 Nov 2005 10:46:10 +0000 (11:46 +0100)
8MB slack in the mem_map and the p2m table.

Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/arch/xen/i386/kernel/setup.c
linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c

index 958e2af479d71332ef20750f9c16ec80dca90244..fe63fe98469a0307770e55957739d7f8a30489e5 100644 (file)
@@ -936,11 +936,15 @@ void __init find_max_pfn(void)
 /* We don't use the fake e820 because we need to respond to user override. */
 void __init find_max_pfn(void)
 {
-       if ( xen_override_max_pfn < xen_start_info->nr_pages )
-               xen_override_max_pfn = xen_start_info->nr_pages;
-       max_pfn = xen_override_max_pfn;
-       /* 8MB slack, to make up for address space allocations in backends. */
-       max_pfn += 8 << (20 - PAGE_SHIFT);
+       if (xen_override_max_pfn == 0) {
+               max_pfn = xen_start_info->nr_pages;
+               /* Default 8MB slack (to balance backend allocations). */
+               max_pfn += 8 << (20 - PAGE_SHIFT);
+       } else if (xen_override_max_pfn > xen_start_info->nr_pages) {
+               max_pfn = xen_override_max_pfn;
+       } else {
+               max_pfn = xen_start_info->nr_pages;
+       }
 }
 #endif /* XEN */
 
index c4f0999d32e9022e85607ed1c154b1fc5619bcc3..8aff532d39152c5557cb28c4d969cc88dbc6b392 100644 (file)
@@ -526,15 +526,19 @@ extern union xen_start_info_union xen_start_info_union;
 
 unsigned long __init e820_end_of_ram(void)
 {
-        unsigned long max_end_pfn = xen_start_info->nr_pages;
-
-       if ( xen_override_max_pfn < max_end_pfn)
-               xen_override_max_pfn = max_end_pfn;
-
-       /* 8MB slack, to make up for address space allocations in backends. */
-       xen_override_max_pfn += 8 << (20 - PAGE_SHIFT);
+        unsigned long max_end_pfn;
+
+       if (xen_override_max_pfn == 0) {
+               max_end_pfn = xen_start_info->nr_pages;
+               /* Default 8MB slack (to balance backend allocations). */
+               max_end_pfn += 8 << (20 - PAGE_SHIFT);
+       } else if (xen_override_max_pfn > xen_start_info->nr_pages) {
+               max_end_pfn = xen_override_max_pfn;
+       } else {
+               max_end_pfn = xen_start_info->nr_pages;
+       }
 
-       return xen_override_max_pfn;
+       return max_end_pfn;
 }
 
 void __init e820_reserve_resources(void)